<template>
	<view class="x-image">
		<template v-if="mode==='widthFix'">
			<image v-if="!finish" :mode="mode" :src="defaultImage" :style="{width: '100%'}"></image>
			<image :mode="mode" :src="src" :style="{width: '100%'}" @load="finishLoad"></image>
		</template>
		<template v-else-if="mode==='heightFix'">
			<image v-if="!finish" :mode="mode" :src="defaultImage" :style="{height: '100%'}"></image>
			<image :mode="mode" :src="src" :style="{height: '100%'}" @load="finishLoad"></image>
		</template>
		<template v-else>
			<image v-if="!finish" :mode="mode" :src="defaultImage"></image>
			<image :mode="mode" :src="src" @load="finishLoad"></image>
		</template>
	</view>
</template>

<script>
	export default {
		  // externalClasses:['custom-class'],//uniapp不生效

		  props: {
		    //默认图片
		    defaultImage: {
		      type:String,
		      default: require('@/static/errImg.png'),
		    },
		    src: String, //加载图片URL地址
			
			// // scaleToFill	缩放模式，不保持纵横比缩放图片，使图片的宽高完全拉伸至填满 image 元素
			// // aspectFit	缩放模式，保持纵横比缩放图片，使图片的长边能完全显示出来。也就是说，可以完整地将图片显示出来。	
			// // aspectFill	缩放模式，保持纵横比缩放图片，只保证图片的短边能完全显示出来。也就是说，图片通常只在水平或垂直方向是完整的，另一个方向将会发生截取。	
			// // widthFix		缩放模式，宽度不变，高度自动变化，保持原图宽高比不变	
			// // heightFix	缩放模式，高度不变，宽度自动变化，保持原图宽高比不变	2.10.3
		    mode: {
				type: String,
				default: 'widthFix'
			},
		  },
		  data() {
		    return {
				finish: false
			}
		  },
		  methods: {
		    finishLoad(e) {
				this.finish = true
		    }
		  }
	}
</script>

<style lang="scss" scoped>
	.x-image {
		// overflow: hidden;
	}
</style>